NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @id codeHiglighting // @name forum.mobilism.org Code Highlighting JavaScript [Beta] by (GL)BigBrother // @version 0.2.3 // @description forum.mobilism.org or mobilism.me syntax highlighting in code tag. Thanks to highlightjs.org for highlight.js and css themes. // @icon http://cdn4.aptoide.com/imgs/2/e/f/2efe668367ff1036f99de8f76b3b8381.png // @icon64 http://i.imgur.com/mWrE59h.png // @author Faizan Anwer Ali <faizananwer2011@gmail.com> // @match http://forum.mobilism.org/* // @match https://forum.mobilism.org/* // @match http://mobilism.me/+ // @match https://mobilism.me/+ // @include http://forum.mobilism.org/* // @include https://forum.mobilism.org/* // @include http://mobilism.me/+ // @include https://mobilism.me/+ // @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js // @require https://sites.google.com/site/faizanrupani2013/script/highlight.pack.js // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @grant GM_openInTab // ==/UserScript== /* Information ******************************************************************************************** (GL)BigBrother's Homepage: https://openuserjs.org/scripts/FaizanAnwerAli/forum.mobilism.org_Code_Highlighting_JavaScript_%5BBeta%5D_by_(GL)BigBrother http://forum.mobilism.org/viewtopic.php?t=1090454 ------------------------------------ Version History ------------------------------------ 0.2.3 (3-June-2015) - Minor bug fixed. - updated higlight.js script to v8.6. Now it will auto update. 0.2.2 (10-May-2015) - Fixed small bug of not displaying <br> line of html in code tag. 0.2.1 (9-May-2015) - Remove highlighting from Quotes tag Button. (firefox bug fixed, now it'll work in all browser except IE.) 0.2 (8-May-2015) - Added 9 new themes. Total 63 themes. ("atelier-cave.dark","atelier-cave.light","atelier-estuary.dark","atelier-estuary.light","atelier-plateau.dark","atelier-plateau.light","atelier-savanna.dark","atelier-savanna.light","github-gist") - Auto css theme update. - Auto Script Update checking System. - Remove highlighting from Quotes tag Button. (Properly work only in Chrome, I'll fix firefox bug as soon as I know how to do that) 0.1 (17-Apr-2015) - Initial Release *************************************************************************************************/ /*@require http://yourjavascript.com/4405510561/highlight-pack.js*/ (function(){ var data = '<span style="font-size: 12px;margin-left:5px;color: rebeccapurple;"><b>Select Theme for Code Highlighting</b></span><select id="Themes" onchange="jsfunction(this.value)" style="margin-left: 10px;"> <option id="default">default</option> <option id="disable">disable</option> <option id="agate">agate</option> <option id="androidstudio">androidstudio</option> <option id="arta">arta</option> <option id="ascetic">ascetic</option> <option id="atelier-cave.dark">atelier-cave.dark</option> <option id="atelier-cave.light">atelier-cave.light</option> <option id="atelier-dune.dark">atelier-dune.dark</option> <option id="atelier-dune.light">atelier-dune.light</option> <option id="atelier-estuary.dark">atelier-estuary.dark</option> <option id="atelier-estuary.light">atelier-estuary.light</option> <option id="atelier-forest.dark">atelier-forest.dark</option> <option id="atelier-forest.light">atelier-forest.light</option> <option id="atelier-heath.dark">atelier-heath.dark</option> <option id="atelier-heath.light">atelier-heath.light</option> <option id="atelier-lakeside.dark">atelier-lakeside.dark</option> <option id="atelier-lakeside.light">atelier-lakeside.light</option> <option id="atelier-plateau.dark">atelier-plateau.dark</option><option id="atelier-plateau.light">atelier-plateau.light</option><option id="atelier-savanna.dark">atelier-savanna.dark</option><option id="atelier-savanna.light">atelier-savanna.light</option> <option id="atelier-seaside.dark">atelier-seaside.dark</option> <option id="atelier-seaside.light">atelier-seaside.light</option> <option id="atelier-sulphurpool.dark">atelier-sulphurpool.dark</option> <option id="atelier-sulphurpool.light">atelier-sulphurpool.light</option> <option id="brown_paper">brown_paper</option> <option id="codepen-embed">codepen-embed</option> <option id="color-brewer">color-brewer</option> <option id="dark">dark</option> <option id="darkula">darkula</option> <option id="docco">docco</option> <option id="far">far</option> <option id="foundation">foundation</option> <option id="github-gist">github-gist</option> <option id="github">github</option> <option id="googlecode">googlecode</option> <option id="hybrid">hybrid</option> <option id="idea">idea</option> <option id="ir_black">ir_black</option> <option id="kimbie.dark">kimbie.dark</option> <option id="kimbie.light">kimbie.light</option> <option id="magula">magula</option> <option id="mono-blue">mono-blue</option> <option id="monokai">monokai</option> <option id="monokai_sublime">monokai_sublime</option> <option id="obsidian">obsidian</option> <option id="paraiso.dark">paraiso.dark</option> <option id="paraiso.light">paraiso.light</option> <option id="pojoaque">pojoaque</option> <option id="railscasts">railscasts</option> <option id="rainbow">rainbow</option> <option id="school_book">school_book</option> <option id="solarized_dark">solarized_dark</option> <option id="solarized_light">solarized_light</option> <option id="sunburst">sunburst</option> <option id="tomorrow">tomorrow</option> <option id="tomorrow-night">tomorrow-night</option> <option id="tomorrow-night-blue">tomorrow-night-blue</option> <option id="tomorrow-night-bright">tomorrow-night-bright</option> <option id="tomorrow-night-eighties">tomorrow-night-eighties</option> <option id="vs">vs</option> <option id="xcode">xcode</option> <option id="zenburn">zenburn</option></select><button id="goButtonClick" style="margin-left: 8px; font-size: 12px;width: 30px;">Go</button>'; var body = document.body || document.getElementsByTagName('body')[0]; var div = document.createElement('div'); div.id = 'storevalue'; div.innerHTML = 'default'; body.appendChild(div); $("#storevalue").hide(); var slides = document.getElementsByClassName("codecontent"); if(slides.length > 0) { $(".tablebg").eq(2).before(data); } var s = document.getElementsByClassName("uncited"); for ( var i = 0; i < s.length; i++) { var mainClass = document.getElementsByClassName("uncited")[i]; var childDiv = mainClass.getElementsByTagName('div')[0]; childDiv.className = "codetag"; } var tag1 = document.getElementsByTagName("code"); var tag2 = document.getElementsByClassName("codetag"); if(tag1.length > 0 || tag2.length > 0) { var slides2 = document.getElementsByClassName("pull-right"); for ( var i = 0; i < slides2.length; i++) { var strr = document.getElementsByClassName("pull-right")[i].innerHTML; var nn = strr.lastIndexOf('<div class="pagination pagination-small hidden-phone">'); var mm = nn + 54; var ress = strr.slice(nn, mm); if (ress === '<div class="pagination pagination-small hidden-phone">') { var pullrightinnerhtml = document.getElementsByClassName("pull-right")[i].innerHTML; document.getElementsByClassName("pull-right")[i].innerHTML = data + pullrightinnerhtml; break; } } } var head = document.head || document.getElementsByTagName('head')[0]; var scripttag = document.createElement('script'); scripttag.innerHTML = 'function jsfunction(value){document.getElementById("storevalue").innerHTML = value;}'; head.appendChild(scripttag); var theme = GM_getValue("themes", "default"); document.getElementById(theme).selected = "true"; var cssurl = 'https://raw.githubusercontent.com/isagalaev/highlight.js/master/src/styles/'+theme+'.css'; if (theme !== "disable") { GM_xmlhttpRequest({ method: "GET", url: cssurl, onload: function(xhr) { var style = document.createElement('style'); style.type = 'text/css'; var css = '.codebox span {text-transform: none;border-bottom: none; margin-bottom: 3px; font-size: 0.999em; font-weight: bold; display: inline;} .codecontent {font-size: 12px;} .codetag{font-size: 12px!important;}' + xhr.responseText; if (style.styleSheet) { style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } head.appendChild(style); } }); } $( "#goButtonClick" ).click(function() { var mytheme = document.getElementById("storevalue").innerHTML; GM_setValue("themes", mytheme); location.reload(); }); hljs.configure({useBR: true, tabReplace: ' ',}); hljs.initHighlighting(); $('.codecontent').each(function(i, block) { hljs.highlightBlock(block); }); $('code').each(function(i, block) { hljs.highlightBlock(block); }); var slides3 = document.getElementsByClassName("quotetitle"); for ( var i = 0; i < slides3.length; i++) { var strr = document.getElementsByClassName("quotetitle")[i].innerHTML; document.getElementsByClassName("quotetitle")[i].innerHTML += '<button class="showHighlightingButton" style="cursor: pointer; height: 20px; width: 140px; margin-left: 20px; ">Show Highlighting</button>'; } var slides444 = document.getElementsByClassName("uncited"); for ( var i = 0; i < slides444.length; i++) { var strr = document.getElementsByClassName("uncited")[i].innerHTML; document.getElementsByClassName("uncited")[i].innerHTML = '<button class="showHighlightingButton" style="cursor: pointer; margin-left: 10px; position: relative;top: -5px;">Show Highlighting</button>' + strr; } var slidess = document.getElementsByTagName("blockquote"); for ( var i = 0; i < slidess.length; i++) { var strr = slidess[i].innerHTML; slidess[i].innerHTML = '<button class="showHighlightingButton" style="cursor: pointer; margin-left: 10px; position: relative;top: -5px;">Show Highlighting</button>' + strr; } var slidesss = document.getElementsByClassName("showHighlightingButton"); var checkcheck =''; for ( var i = 0; i < slidesss.length; i++) { var idid = 'showHighlightingButton' + i; document.getElementsByClassName("showHighlightingButton")[i].id = idid; document.getElementById(idid).addEventListener("click", function(){some_function(this.id);}); } function some_function(aa){ var storeIdValue = aa; var res = storeIdValue.slice(22,storeIdValue.length); var a = parseInt(res); var classexsist = document.getElementsByClassName("quotecontent"); if(classexsist.length > 0) { if ($('.quotecontent').eq(a).hasClass('hljs')) { document.getElementById(storeIdValue).innerHTML = 'Show Highlighting'; document.getElementsByClassName("quotecontent")[a].innerHTML = document.getElementsByClassName("quotecontent")[a].innerHTML.replace(/\<br\>/gi, "brlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrline"); document.getElementsByClassName("quotecontent")[a].textContent = document.getElementsByClassName("quotecontent")[a].textContent.replace(/brlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrline/gi, "bvuyhasdiuadbkuasdbkuwbiuva835ui3247iihijnasdh9asd81b2ibsad9o8lkabsf91bqo87dashjhbkasb<br>"); document.getElementsByClassName("quotecontent")[a].innerHTML = document.getElementsByClassName("quotecontent")[a].innerHTML.replace(/bvuyhasdiuadbkuasdbkuwbiuva835ui3247iihijnasdh9asd81b2ibsad9o8lkabsf91bqo87dashjhbkasb\<\;br\>\;/gi, "<br>"); var x = document.querySelectorAll(".quotecontent"); var languageClass = x[a].className; var languageName = languageClass.slice(18, languageClass.length); $('.quotecontent').eq(a).removeClass('hljs'); $('.quotecontent').eq(a).removeClass(languageName); } else { document.getElementById(storeIdValue).innerHTML = 'Remove Highlighting'; $('.quotecontent').eq(a).each(function(i, block) { hljs.highlightBlock(block); }); } } else { if ($('.codetag').eq(a).hasClass('hljs')) { document.getElementById(storeIdValue).innerHTML = 'Show Highlighting'; document.getElementsByClassName("codetag")[a].innerHTML = document.getElementsByClassName("codetag")[a].innerHTML.replace(/\<br\>/gi, "brlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrline"); document.getElementsByClassName("codetag")[a].textContent = document.getElementsByClassName("codetag")[a].textContent.replace(/brlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrlinebrline/gi, "bvuyhasdiuadbkuasdbkuwbiuva835ui3247iihijnasdh9asd81b2ibsad9o8lkabsf91bqo87dashjhbkasb<br>"); document.getElementsByClassName("codetag")[a].innerHTML = document.getElementsByClassName("codetag")[a].innerHTML.replace(/bvuyhasdiuadbkuasdbkuwbiuva835ui3247iihijnasdh9asd81b2ibsad9o8lkabsf91bqo87dashjhbkasb\<\;br\>\;/gi, "<br>"); $('.codetag').eq(a).removeClass('hljs'); var x = document.querySelectorAll(".codetag"); var languageClass = x[a].className; var languageName = languageClass.slice(13, languageClass.length); $('.codetag').eq(a).removeClass(languageName); } else { document.getElementById(storeIdValue).innerHTML = 'Remove Highlighting'; $('.codetag').eq(a).each(function(i, block) { hljs.highlightBlock(block); }); } } } var currentVersion = GM_info.script.version; getXML(); function createXMLHttpRequest() { try { return new XMLHttpRequest(); } catch(e) {} try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {} try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} alert("XMLHttpRequest not supported"); return null; } function getXML() { var xhReq = createXMLHttpRequest(); var server = 'https://sites.google.com/site/faizanrupani2013/xml/HighlightingVersion.xml'; xhReq.open("GET", "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'" + server.replace(/ /,'%2520') + "'", false); xhReq.onreadystatechange=function(){ if (xhReq.readyState == 4) { var rawXML = xhReq.responseXML; var serverVersion = rawXML.getElementsByTagName("version")[0].innerHTML.toString(); if (serverVersion !== currentVersion) { if (confirm('New update is available for Higlighting Script\nDo you want update it?')) { GM_openInTab("https://openuserjs.org/scripts/FaizanAnwerAli/forum.mobilism.org_Code_Highlighting_JavaScript_%5BBeta%5D_by_(GL)BigBrother"); } } } } xhReq.send(null); } })();